<!--
 * @Author: your name
 * @Date: 2022-01-19 10:32:50
 * @LastEditTime: 2022-01-19 11:09:27
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \算法测试\day0906\219存在重复元素条件.html
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /**
         * @param {number[]} nums
         * @param {number} k
         * @return {boolean}
         * 给你一个整数数组 nums 和一个整数 k ，判断数组中是否存在两个 不同的索引 i 和 j ，满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在，返回 true ；否则，返回 false 。
        
         
        
        示例 1：
        
        输入：nums = [1,2,3,1], k = 3
        输出：true
        示例 2：
        
        输入：nums = [1,0,1,1], k = 1
        输出：true
        示例 3：
        
        输入：nums = [1,2,3,1,2,3], k = 2
        输出：false
        
        来源：力扣（LeetCode）
        链接：https://leetcode-cn.com/problems/contains-duplicate-ii
        著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
        思路：滑动窗口 拿到每个i的左右指针 形成数组比对；
         */
        var containsNearbyDuplicate = function (nums, k) {
            for (let i = 0; i < nums.length; i++) {
                let left = i - k;
                let right = i + k;
                if (left < 0) left = 0;
                if (right > nums.length - 1) right = nums.length - 1;
                for (let j = left; j <= right; j++) {
                    if (j === i) continue;
                    if (nums[i] === nums[j] && Math.abs(i - j) <= k) return true;
                }
            }
            return false;
        };
    </script>
</body>

</html>